package com.ruoyi.report.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.mybatisplus.core.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 人员花名册
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("report_user")
public class ReportUser implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long deptId;

    private Long userId;

    /** 工号 */
    @Excel(name = "工号")
    private String userNo;

    /** 姓名 */
    @Excel(name = "姓名")
    private String name;

    /** 性别 */
    @Excel(name = "性别", dictType = "sys_user_sex")
    private String sex;

    /** 人员类型 */
    @Excel(name = "人员类型", dictType = "basic_user_type")
    private String userType;

    /** 民族 */
    @Excel(name = "民族", dictType = "basic_user_nation")
    private String nationType;

    /** 手机号码 */
    @Excel(name = "手机号码")
    private String phonenumber;

    /** 身份证号 */
    @Excel(name = "身份证号")
    private String idCard;

    /** 籍贯 */
    @Excel(name = "籍贯")
    private String regionName;

    /** 出生日期 */
    @Excel(name = "出生年月")
    private String birthday;

    /** 职位类别 */
    @Excel(name = "职位类别", dictType = "basic_user_position")
    private String userPosition;

    /** 管理部门 */
    @Excel(name = "管理部门", dictType = "basic_user_dept")
    private String userDept;

    /** 政治面貌 */
    @Excel(name = "政治面貌", dictType = "basic_user_political")
    private String politicalType;

    /** 组织时间 */
    @Excel(name = "组织时间")
    private String politicalTime;

    /** 健康状况 */
    @Excel(name = "健康状况", dictType = "basic_user_health")
    private String healthStatus;

    /** 来院时间 */
    @Excel(name = "来院时间")
    private String hospitalTime;

    /** 离院时间 */
    @Excel(name = "离院时间")
    private String leaveTime;

    /** 技术类别 */
    @Excel(name = "技术类别", dictType = "basic_user_technical")
    private String technicalType;

    /** 所在科室 */
    @Excel(name = "所在科室")
    private String deptName;

    /** 工作时间 */
    @Excel(name = "工作时间")
    private String workTime;

    /** 工龄起算日期 */
    @Excel(name = "工龄起算日期")
    private String seniorityStart;

    /** 备案岗位 */
    @Excel(name = "备案岗位")
    private String workPost;

    /** 合同开始时间 */
    @Excel(name = "合同开始时间")
    private String workStart;

    /** 合同结束时间 */
    @Excel(name = "合同结束时间")
    private String workEnd;

    /** 是否全职 */
    @Excel(name = "是否全职", dictType = "basic_work_type")
    private String workType;

    /** 编制情况 */
    @Excel(name = "编制情况", dictType = "basic_work_duty")
    private String workDuty;

    /** 毕业院校 */
    @Excel(name = "毕业院校")
    private String schoolName;

    /** 毕业时间 */
    @Excel(name = "毕业时间")
    private String schoolEnd;

    /** 学历 */
    @Excel(name = "全日制学历", dictType = "basic_educate_name")
    private String educateName;

    /** 学位 */
    @Excel(name = "全日制学位", dictType = "basic_educate_degree")
    private String educateDegree;

    /** 专业 */
    @Excel(name = "专业")
    private String educateMajor;

    /** 院校类型 */
    @Excel(name = "院校类型", dictType = "basic_school_type")
    private String schoolType;

    /** 毕业院校 */
    @Excel(name = "毕业院校")
    private String schoolName2;

    /** 毕业时间 */
    @Excel(name = "毕业时间")
    private String schoolEnd2;

    /** 学历 */
    @Excel(name = "最高学历", dictType = "basic_educate_name")
    private String educateName2;

    /** 学位 */
    @Excel(name = "最高学位", dictType = "basic_educate_degree")
    private String educateDegree2;

    /** 专业 */
    @Excel(name = "专业")
    private String educateMajor2;

    /** 现任行政职务 */
    @Excel(name = "现任行政职务")
    private String dutyName;

    /** 任职时间 */
    @Excel(name = "任职时间")
    private String dutyStart;

    /** 级别 */
    @Excel(name = "级别", dictType = "basic_duty_level")
    private String dutyLevel;

    /** 连续任该职起始时间 */
    @Excel(name = "连续任该职起始时间")
    private String continueTime;

    /** 现取得职务资格 */
    @Excel(name = "现取得职务资格", dictType = "basic_post_name")
    private String postName;

    /** 取得时间 */
    @Excel(name = "取得时间")
    private String obtainTime;

    /** 现聘任职务资格 */
    @Excel(name = "现聘任职务资格", dictType = "basic_post_title")
    private String postTitle;

    /** 聘任时间 */
    @Excel(name = "聘任时间")
    private String engageTime;

    /** 取得职称等级 */
    @Excel(name = "取得职称等级", dictType = "basic_post_level")
    private String obtainLevel;

    /** 聘任职称等级 */
    @Excel(name = "聘任职称等级", dictType = "basic_post_level")
    private String postLevel;

    /** 现聘任取得方式 */
    @Excel(name = "职称等级", dictType = "basic_post_type")
    private String postType;

    /** 社会兼职情况 */
    @Excel(name = "社会兼职情况")
    private String holdWork;

    /** 备注 */
    @Excel(name = "备注")
    private String remark;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 提醒日期 */
    @TableField(exist = false)
    private Date remindDate;

    /** 花名册月份 */
    private String reportMonth;

    /** 请求参数 */
    @TableField(exist = false)
    private Map<String, Object> params;

    public Map<String, Object> getParams()
    {
        if (params == null)
        {
            params = new HashMap<>();
        }
        return params;
    }
}
